home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 008 / cps.arc / SPOST.BAS < prev    next >
Encoding:
BASIC Source File  |  1988-07-17  |  6.2 KB  |  87 lines

  1. 100     CLS : ON ERROR GOTO 8000
  2. 110     DIM T(10,100)                                   'Time(Horizon,ShotPoint)
  3. 120     COLOR 13,0,0
  4. 200     PRINT "                               ****  SPOST  ****" :                      PRINT "                              Seismic data poster"
  5. 250     '
  6. 300     ' Written by Jeffrey D. Prouty for Jordan Oil & Gas Co., Dec. 1984'
  7. 1000    '                                                                               'User Input                                                                     '
  8. 1020    PRINT : INPUT "                              Seismic line";SEISLINE$
  9. 1030    OPEN SEISLINE$ + ".TXT" FOR INPUT AS #1
  10. 1050    PRINT
  11. 1060    INPUT "     Horizontal sampling distance (inches)";HSD
  12. 1100    INPUT "Horizontal scale (+ or - shot points/inch)";HS%
  13. 1200    INPUT "            Vertical scale (inches/second)";VS
  14. 1300    INPUT "                       Origin:  shot point";OSP%
  15. 1400    INPUT "                                      time";OT
  16. 2000    '                                                                               'Data Input                                                                     '
  17. 2200    WHILE NOT EOF(1)
  18. 2300            INPUT #1, H%, X, Y                      'Horizon, X, Y (in.)
  19. 2500            SP%=OSP%+HS%*X :                                                                T=OT-Y/VS                               'ShotPoint & Time
  20. 2510            SPN%=(SP%-OSP%)/(HS%*HSD)               'ShotPoint Number
  21. 2520            T(H%,SPN%)=T                            'Time value array
  22. 2530            IF SPN%>NSP% THEN NSP%=SPN%             'Number of ShotPoints
  23. 2540            IF H%>NH% THEN NH%=H%                   'Number of Horizons
  24. 2900    WEND
  25. 2910    IF HS%>0 THEN LSP%=0 : USP%=NSP% : INC%=1                                       ELSE LSP%=NSP% : USP%=0 : INC%=-1               'Lower & Upper SP's
  26. 3000    '                                                                               'Table Output                                                                   '
  27. 3100    PRINT : PRINT
  28. 3110    INPUT "Would you like to print a table of time values";Q$
  29. 3120    IF LEFT$(Q$,1)<>"y" AND LEFT$(Q$,1)<>"Y" GOTO 4000
  30. 3200    LPRINT : LPRINT CHR$(14)+SEISLINE$ : LPRINT
  31. 3210    LPRINT SPC(7);"Horizon #"
  32. 3300    LPRINT " SP#"; : FOR J%=1 TO NH% : LPRINT SPC(5);J%; : NEXT : LPRINT
  33. 3400    FOR I%=LSP% TO USP% STEP INC%
  34. 3410            LPRINT USING "####";I%*HS%*HSD+OSP%;          'Print ShotPoint
  35. 3500            FOR J%=1 TO NH%
  36. 3510                    LPRINT USING "####.###";T(J%,I%);     'Print Times
  37. 3580            NEXT
  38. 3590            LPRINT
  39. 3600    NEXT
  40. 3610    LPRINT : LPRINT
  41. 4000    '                                                                               'Horizon Output                                                                 '
  42. 5000    '                                                                               'Isotime Output                                                                 '
  43. 5100    PRINT : INPUT "Would you like to calculate and print isotimes";Q$
  44. 5120    IF LEFT$(Q$,1)<>"y" AND LEFT$(Q$,1)<>"Y" GOTO 6000
  45. 5200    INPUT "  Between which two horizons (shallowest, deepest)";S%,D%
  46. 5240    LPRINT : LPRINT CHR$(14)+SEISLINE$ : LPRINT
  47. 5260    LPRINT " SP#   Isotime: ";S%;"to";D%
  48. 5300    FOR I%=LSP% TO USP% STEP INC%
  49. 5310            IF T(S%,I%)=0 OR T(D%,I%)=0 THEN ISO=0! ELSE ISO=T(D%,I%)                       -T(S%,I%)
  50. 5320            LPRINT USING "####";I%*HS%*HSD+OSP%;       'Print ShotPoint
  51. 5330            LPRINT USING "####.###";ISO                'Print Isotime
  52. 5400    NEXT
  53. 5500    INPUT "    Another isotime";Q$
  54. 5510    IF LEFT$(Q$,1)="y" OR LEFT$(Q$,1)="Y" GOTO 5200
  55. 6000    '                                                                               'Menu File Output                                                               '
  56. 6100    PRINT : INPUT "Would you like to create a menu file";Q$
  57. 6110    IF LEFT$(Q$,1)<>"y" AND LEFT$(Q$,1)<>"Y" GOTO 8000
  58. 6200    OPEN SEISLINE$ + ".MNU" FOR OUTPUT AS #2
  59. 6300    FOR J%=1 TO NH%
  60. 6310            PRINT #2,USING "[HOR. _##";J%; :                                                PRINT #2,"]ATTEDIT;Y;;SDATA;;W;\\+"
  61. 6400            FOR I%=USP% TO LSP% STEP -INC%
  62. 6410                    PRINT #2,"V;R;"; :                                                              PRINT #2,USING "#.###";T(J%,I%);
  63. 6420                    IF I%<>LSP% THEN PRINT #2,";N;+"                                                ELSE PRINT #2,";";CHR$(3)
  64. 6490            NEXT I%
  65. 6500    NEXT J%
  66. 6600    INPUT "  Would you like to include isotimes";Q$
  67. 6610    IF LEFT$(Q$,1)<>"y" AND LEFT$(Q$,1)<>"Y" GOTO 8000
  68. 6620    INPUT "    Between which two horizons (shallowest, deepest)";S%,D%
  69. 6630    PRINT #2,USING "[ISO. #";S%; :                                                  PRINT #2,USING "-#";D%; :                                                       PRINT #2,"]ATTEDIT;Y;;SDATA;;W;\\+"
  70. 6640    FOR I%=USP% TO LSP% STEP -INC%
  71. 6645            IF T(S%,I%)=0 OR T(D%,I%)=0 THEN ISO=0! ELSE                                    ISO=T(D%,I%)-T(S%,I%)
  72. 6650            PRINT #2,"V;R;"; :                                                              PRINT #2,USING "#.###";ISO;
  73. 6660            IF I%<>LSP% THEN PRINT #2,";N;+"                                                ELSE PRINT #2,";";CHR$(3)
  74. 6690    NEXT I%
  75. 6700    INPUT "      Another isotime";Q$
  76. 6710    IF LEFT$(Q$,1)="y" OR LEFT$(Q$,1)="Y" GOTO 6620
  77. 8000    '                                                                               '                                                                               '
  78. 8100    IF ERR=25 OR ERR=27 OR ERR=57 OR ERR=68 THEN PRINT :                            INPUT "Check printer and press return when ready",Q$ : RESUME
  79. 8200    IF ERR=53 THEN PRINT : PRINT "File not found, try again" : RESUME 1020
  80. 8900    ON ERR GOTO 0
  81. 9000    '                                                                               'Program End                                                                    '
  82. 9100    CLOSE #1, #2
  83. 9200    LPRINT CHR$(12)
  84. 9400    PRINT : INPUT "Return to DOS (y/[n])";Q$ :                                      IF LEFT$(Q$,1)="y" OR LEFT$(Q$,1)="Y" THEN CLS : SYSTEM
  85. 9900    CLEAR : GOTO 100
  86. 32767   END
  87.